package com.atguigu.gmall.product.controller;

import com.atguigu.gmall.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.io.FilenameUtils;
import org.csource.fastdfs.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.ClassUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

/**
 * @author aaronmegs
 * @create 2020-02-20 4:09 下午
 */
@Api(tags = "文件上传")
@RestController
@RequestMapping("/admin/product")
public class FileUploadController {

    @Value("${file.url}")
    private String fileUrl;

    // 文件上传
    //上传图片  file_id
    // 文件入参名称 必须叫 file   页面提交文件的时候 文件的Key值就是file
    @ApiOperation("文件上传")
    @RequestMapping("/fileUpload")
    public Result<String> fileUpload(MultipartFile file) throws Exception{
        // 配置文件的全路径
        String url = ClassUtils.getDefaultClassLoader().
                getResource("tracker.conf").getPath();
        // 初始化 Tracker客户端的IP地址
        ClientGlobal.init(url);

        // 10.211.55.6:22122 连接Tracker服务器
        TrackerClient trackerClient = new TrackerClient();

        // storage 的IP Post
        TrackerServer trackerServer = trackerClient.getConnection();

        // 创建Storage的客户端 目的是为了连接Storage服务器
        StorageClient1 storageClient1 = new StorageClient1(trackerServer, null);

        // 工具类
        String ext = FilenameUtils.getExtension(file.getOriginalFilename());

        // 上传图片
        String path = storageClient1.upload_file1(
                file.getBytes(), ext, null);

        System.out.println(fileUrl + path);
        return Result.ok(fileUrl + path);
    }
}
